iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
DevOps

今晚我想來點 Terraform 佐 AWS系列 第 9

今晚我想要在組態檔裡拌入一些「變數」

  • 分享至 

  • xImage
  •  

前面的範例,所有的設定都是寫死的

要讓 terraform 組態檔能重複使用,並適合放入版本控制裡, 我們需要參數化一些組態資料。

Terraform 有「輸入變數」 (Input Variables) 的功能,讓我們宣告變數。

輸入變數 (Input Variables)

在任何 .tf 檔案都可以宣告變數。

如果想要讓檔名好辨識,建議用 variables.tf 當做檔名。

輸入變數使用 variable 區塊宣告變數,如下:

variable "aws_region" {
  type        = string
  description = "AWS region to launch servers."
  default     = "ap-northeast-1"
}

variable "my_ip" {
  type        = string
  description = "my ip to allow ssh connection"
}

variable 的引數:

  • type: 決定變數的型態 (可以是 string, number, bool ...etc)
  • description: 說明變數的用途
  • default: 預設值

指派數值給變數

什麼事都不做的話,在 plan 或是 apply 時,會要求你輸入資料,如下:

$ terraform plan
var.my_ip
  my ip to allow ssh connection

  Enter a value:

當然沒有人想一直打字,這很累人,我們來看看有什麼方法可以使用。

指令跟 -var 參數

想要在輸入指令時帶入資料,要加上 -var 參數,如下:

$ terraform plan -var="my_ip=1.1.1.1"

變數定義檔 .tfvars

建立 .tfvars 檔案,並在輸入指令時,加上 -var-file 參數,如下:

testing.tfvars

ami   = "ami-0461b11e2fad8c14a"
my_ip = 1.1.1.1
$ terraform apply -var-file="testing.tfvars"

如果符合以下幾個檔名規則,Terraform 則會自動讀取內容

  • terraform.tfvars
  • *.auto.tfvars

環境變數

Terraform 會搜尋以 TF_VAR_ 開頭宣告的環境變數來使用

$ export TF_VAR_my_ip=1.1.1.1
$ terraform plan

變數的使用優先順序

Terraform 載入變數的順序如下,較晚載入的會覆蓋前面的:

  • 環境變數
  • terraform.tfvars
  • *.auto.tfvars
  • 指令加上 -var 或是 -var-file 參數

上一篇
今晚我想來點 Terraform 佐 Vim
下一篇
今晚我想「輸出」狀態檔的重點
系列文
今晚我想來點 Terraform 佐 AWS30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言